Android Wear用のアプリで、BoxInsetLayoutでFrameLayout、TableLayout、TableRowを使った時のメモ書き
最近暇だったので放置していたAndroidのアプリの修正をしていたのですが、スマホ用のアプリはSDKのアプデが早いとはいえ、非推奨のメソッドを新しいメソッドに変更したりして対応できたけど、Wearable用のアプリはWearableのLibraly自体がまだ出来立てだったので、そもそもWearable用のLibralyを使ってさえいなかった為、調べつつ修正していたのですが、そのメモ書きです。
ここではプログラミングというか、レイアウト、BoxInsetLayoutでFrameLayout、TableLayout、TableRowを使い、少しはまって解決した時の経緯をメモ書きとして簡潔に掲載しています。
※ 以前即席で作ったWearable用の電卓アプリとコンパスアプリの内、電卓アプリを修正したメモ書きです。
コンパスアプリは修正終わってるけど、ここでは割愛。
BoxInsetLayout一つでRoundとRect型のAndroid Wearに楽に対応させたいという願望を叶える
で、まずはこのDefining Layoutsの説明通り、 BoxInsetLayoutは全体のpaddingを15dpに設定。ぶっちゃけRound型はこれでもいいけどSquare型では余白が出来たので、結果、0dpにしました。これで問題なし!
※ 超初歩的だけど、HTMLやCSSと同じで、padding=”〇dp”で左右上下全てに設定される。
次にFrameLayoutのpaddingを5dpに設定。
また、app:layout_boxの属性にallを指定。説明書きの通り、Box内に全てのレイアウトを配置してくれま・・してくれると思ったんだけど、してくれなかったので、メモ書きしているのですけどね!
TableLayoutでshrinkColumns属性で*(アスタリスク)をくれてやる
TableLayoutはAPIレベル1から使える基本的なレイアウトで、shrinkColumnsは指定した列を縮小表示してくれる属性ですね。
うん、最初にこの属性試せばよかったのだけど、Box内に全てのレイアウトを配置してくれると書いてるし、それ以前にボタンの大きさををwrap_contentにしても、12dpと直接数値を入力しても変化がなかった為、少しはまったのでメモ書きしてるのです。
※ 因みに*(アスタリスク)はすべての列に対して縮小表示を行う事を意味します。
で、これがshrinkColumns属性で*(アスタリスク)を指定しなかった場合の表示。どう見てもBox内に収まってませんね! うそつきは嫌いです。大嫌いです。
これがshrinkColumns属性で*(アスタリスク)くれてやった場合の表示。
BoxInsetLayoutが自動で縮小表示をしてくれるわけではないというおちでした。
因みに縦方向はTableRowでLayout_weight属性に1を指定して均等に割り当てています。
因みに今まではこのようにLinearLayoutを入れ子状態にして電卓アプリのボタンを配置していました。
TableRowは列をまたいで配置が出来ないけど、レイアウトがすっきりしましたね。
あ、配色は相変わらず適当です。もしうぷるならば多少修正したのをうぷります。所詮は学習目的なので適当なのですw
話変わるけど、ニコ生でも言った通り2月から超絶久々にパソコンを使わない1ヵ月間だけのアルバイト始めたのです。で、3月からはまた中国で仕事するかもしれません。予定は未定ですけどね!でゎでゎ!